package cn.aggregate.HashCode;
/*
哈希值：是一个十进制的整数，是由系统随机给出（就是对象的地址值，是一个逻辑地址，是模拟出来的地址，不是数据实际存储的物理地址）
在object类有一个方法，可以获取对象的哈希值
int hashCode（）返回该对象的哈希码值
hashCode方法的源码：
    public native int hashCode();
    native 代表的是调用本地操作系统的方法
 */
public class Dome01HashCode {
    public static void main(String[] args) {
        //person类继承了Object类，所以可以使用object类的hashcode方法
        Person p1 = new Person();
        int h1 = p1.hashCode();
        System.out.println(h1);//189568618

        Person p2 = new Person();
        int h2 = p2.hashCode();
        System.out.println(h2);//793589513

        System.out.println(p1);//cn.aggregate.HashCode.Person@b4c966a
        System.out.println(p2);//cn.aggregate.HashCode.Person@2f4d3709
        //虽然重写了之后他们的值都是1但是他们的物理地址是不相等的

        /*
        String类的哈希值
        String重写了hashcode方法
         */
        String s1 = new String("abc");
        String s2 = new String("abc");
        System.out.println(s1.hashCode());
        System.out.println(s2.hashCode());
    }
}
